package de.poketradeshop.ui.model;

import java.io.Serializable;

import javax.enterprise.context.SessionScoped;
import javax.inject.Named;

import java.sql.Timestamp;
import java.util.List;

/**
 * Represents a product. Set all product properties.
 * 
 */
@Named
@SessionScoped
public class Product implements Serializable {

	private String catchDate;
	private String finder;
	private String catchPlace;
	private String ability;
	private String attack1;
	private String attack2;
	private String attack3;
	private String attack4;
	private String gender;
	private String nature;
	private String name;
	private String type1;
	private String type2;
	private String sentence;
	private String search;
	private boolean dealOfTheDay;
	private boolean event;
	private boolean shiny;
	private boolean visible;
	private boolean legendary;
	private boolean inBasket;
	private int evAtk;
	private int evDef;
	private int evHp;
	private int evInit;
	private int evSpatk;
	private int evSpdef;
	private int id;
	private int catchLevel;
	private int level;
	private int productId;
	private float normalPrice = 0.00f;
	private float specialPrice = 0.00f;
	private Timestamp timestamp;

	private Pokemon pokemon;
	private List<Pokemon> pokemons;

	private PokemonProperty pokemonAbility;
	private List<PokemonProperty> pokemonAbilities;

	private PokemonProperty pokemonAttack1;
	private List<PokemonProperty> pokemonAttacks1;

	private PokemonProperty pokemonAttack2;
	private List<PokemonProperty> pokemonAttacks2;

	private PokemonProperty pokemonAttack3;
	private List<PokemonProperty> pokemonAttacks3;

	private PokemonProperty pokemonAttack4;
	private List<PokemonProperty> pokemonAttacks4;

	private PokemonProperty pokemonDv;
	private List<PokemonProperty> pokemonDvs;

	private PokemonProperty pokemonGender;
	private List<PokemonProperty> pokemonGenders;

	private PokemonProperty pokemonNature;
	private List<PokemonProperty> pokemonNatures;

	
	public String getAbility() {
		return ability;
	}

	
	public void setAbility(String ability) {
		this.ability = ability;
	}

	
	public String getAttack1() {
		return attack1;
	}

	
	public void setAttack1(String attack1) {
		this.attack1 = attack1;
	}

	
	public String getAttack2() {
		return attack2;
	}

	
	public void setAttack2(String attack2) {
		this.attack2 = attack2;
	}

	
	public String getAttack3() {
		return attack3;
	}

	
	public void setAttack3(String attack3) {
		this.attack3 = attack3;
	}

	
	public String getAttack4() {
		return attack4;
	}

	
	public void setAttack4(String attack4) {
		this.attack4 = attack4;
	}

	
	public String getGender() {
		return gender;
	}

	
	public void setGender(String gender) {
		this.gender = gender;
	}

	
	public String getNature() {
		return nature;
	}

	
	public void setNature(String nature) {
		this.nature = nature;
	}

	
	public String getCatchDate() {
		return catchDate;
	}

	public void setCatchDate(String catchDate) {
		this.catchDate = catchDate;
	}

	
	public int getCatchLevel() {
		return catchLevel;
	}

	
	public void setCatchLevel(int catchLevel) {
		this.catchLevel = catchLevel;
	}

	public String getCatchPlace() {
		return catchPlace;
	}

	
	public void setCatchPlace(String catchPlace) {
		this.catchPlace = catchPlace;
	}

	
	public boolean isDealOfTheDay() {
		return dealOfTheDay;
	}

	
	public void setDealOfTheDay(boolean dealOfTheDay) {
		this.dealOfTheDay = dealOfTheDay;
	}

	
	public int getEvAtk() {
		return evAtk;
	}

	
	public void setEvAtk(int evAtk) {
		this.evAtk = evAtk;
	}

	
	public int getEvDef() {
		return evDef;
	}

	
	public void setEvDef(int evDef) {
		this.evDef = evDef;
	}

	
	public int getEvHp() {
		return evHp;
	}

	
	public void setEvHp(int evHp) {
		this.evHp = evHp;
	}

	
	public int getEvInit() {
		return evInit;
	}

	/**
	 * 
	 * @param evInit
	 */
	public void setEvInit(int evInit) {
		this.evInit = evInit;
	}

	
	public int getEvSpatk() {
		return evSpatk;
	}

	
	public void setEvSpatk(int evSpatk) {
		this.evSpatk = evSpatk;
	}

	
	public int getEvSpdef() {
		return evSpdef;
	}

	
	public void setEvSpdef(int evSpdef) {
		this.evSpdef = evSpdef;
	}

	
	public boolean isEvent() {
		return event;
	}

	
	public void setEvent(boolean event) {
		this.event = event;
	}

	
	public String getFinder() {
		return finder;
	}

	
	public void setFinder(String finder) {
		this.finder = finder;
	}

	
	public int getLevel() {
		return level;
	}

	
	public void setLevel(int level) {
		this.level = level;
	}

	
	public float getNormalPrice() {
		return normalPrice;
	}

	
	public void setNormalPrice(float normalPrice) {
		this.normalPrice = normalPrice;
	}

	
	public boolean isShiny() {
		return shiny;
	}

	
	public void setShiny(boolean shiny) {
		this.shiny = shiny;
	}

	
	public float getSpecialPrice() {
		return specialPrice;
	}

	
	public void setSpecialPrice(float specialPrice) {
		this.specialPrice = specialPrice;
	}

	
	public Timestamp getTimestamp() {
		return timestamp;
	}

	public void setTimestamp(Timestamp timestamp) {
		this.timestamp = timestamp;
	}

	public boolean isVisible() {
		return visible;
	}

	public void setVisible(boolean visible) {
		this.visible = visible;
	}

	public Pokemon getPokemon() {
		return pokemon;
	}

	public void setPokemon(Pokemon pokemon) {
		this.pokemon = pokemon;
	}

	public List<Pokemon> getPokemons() {
		return pokemons;
	}

	public void setPokemons(List<Pokemon> pokemons) {
		this.pokemons = pokemons;
	}

	public PokemonProperty getPokemonAbility() {
		return pokemonAbility;
	}

	public void setPokemonAbility(PokemonProperty pokemonAbility) {
		this.pokemonAbility = pokemonAbility;
	}

	public List<PokemonProperty> getPokemonAbilities() {
		return pokemonAbilities;
	}

	public void setPokemonAbilities(List<PokemonProperty> pokemonAbilities) {
		this.pokemonAbilities = pokemonAbilities;
	}

	public PokemonProperty getPokemonAttack1() {
		return pokemonAttack1;
	}

	public void setPokemonAttack1(PokemonProperty pokemonAttack1) {
		this.pokemonAttack1 = pokemonAttack1;
	}

	public List<PokemonProperty> getPokemonAttacks1() {
		return pokemonAttacks1;
	}

	public void setPokemonAttacks1(List<PokemonProperty> pokemonAttacks1) {
		this.pokemonAttacks1 = pokemonAttacks1;
	}

	public PokemonProperty getPokemonAttack2() {
		return pokemonAttack2;
	}

	public void setPokemonAttack2(PokemonProperty pokemonAttack2) {
		this.pokemonAttack2 = pokemonAttack2;
	}

	public List<PokemonProperty> getPokemonAttacks2() {
		return pokemonAttacks2;
	}

	public void setPokemonAttacks2(List<PokemonProperty> pokemonAttacks2) {
		this.pokemonAttacks2 = pokemonAttacks2;
	}

	public PokemonProperty getPokemonAttack3() {
		return pokemonAttack3;
	}

	public void setPokemonAttack3(PokemonProperty pokemonAttack3) {
		this.pokemonAttack3 = pokemonAttack3;
	}

	public List<PokemonProperty> getPokemonAttacks3() {
		return pokemonAttacks3;
	}

	public void setPokemonAttacks3(List<PokemonProperty> pokemonAttacks3) {
		this.pokemonAttacks3 = pokemonAttacks3;
	}

	public PokemonProperty getPokemonAttack4() {
		return pokemonAttack4;
	}

	public void setPokemonAttack4(PokemonProperty pokemonAttack4) {
		this.pokemonAttack4 = pokemonAttack4;
	}

	public List<PokemonProperty> getPokemonAttacks4() {
		return pokemonAttacks4;
	}

	public void setPokemonAttacks4(List<PokemonProperty> pokemonAttacks4) {
		this.pokemonAttacks4 = pokemonAttacks4;
	}

	public PokemonProperty getPokemonDv() {
		return pokemonDv;
	}

	public void setPokemonDv(PokemonProperty pokemonDv) {
		this.pokemonDv = pokemonDv;
	}

	public List<PokemonProperty> getPokemonDvs() {
		return pokemonDvs;
	}

	public void setPokemonDvs(List<PokemonProperty> pokemonDvs) {
		this.pokemonDvs = pokemonDvs;
	}

	public PokemonProperty getPokemonGender() {
		return pokemonGender;
	}

	public void setPokemonGender(PokemonProperty pokemonGender) {
		this.pokemonGender = pokemonGender;
	}

	public List<PokemonProperty> getPokemonGenders() {
		return pokemonGenders;
	}

	public void setPokemonGenders(List<PokemonProperty> pokemonGenders) {
		this.pokemonGenders = pokemonGenders;
	}

	public PokemonProperty getPokemonNature() {
		return pokemonNature;
	}

	public void setPokemonNature(PokemonProperty pokemonNature) {
		this.pokemonNature = pokemonNature;
	}

	public List<PokemonProperty> getPokemonNatures() {
		return pokemonNatures;
	}

	public void setPokemonNatures(List<PokemonProperty> pokemonNatures) {
		this.pokemonNatures = pokemonNatures;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getType1() {
		return type1;
	}

	public void setType1(String type1) {
		this.type1 = type1;
	}

	public String getType2() {
		return type2;
	}

	public void setType2(String type2) {
		this.type2 = type2;
	}

	public boolean isLegendary() {
		return legendary;
	}

	public void setLegendary(boolean legendary) {
		this.legendary = legendary;
	}

	public int getProductId() {
		return productId;
	}

	public void setProductId(int productId) {
		this.productId = productId;
	}

	public String getSentence() {
		return sentence;
	}

	public void setSentence(String sentence) {
		this.sentence = sentence;
	}

	public String getSearch() {
		return search;
	}

	public void setSearch(String search) {
		this.search = search;
	}

	public boolean isInBasket() {
		return inBasket;
	}

	public void setInBasket(boolean inBasket) {
		this.inBasket = inBasket;
	}

}